/*
 *  Agent.h
 *  MilovoMg00
 *
 *  Created by jonny on 6/8/06.
 *  Copyright 2006 __MyCompanyName__. All rights reserved.
 *
 */

#ifndef AGENT_H
#define AGENT_H

#include "Milovo_HCommons.h"
#include "Recipe.h"
#include "Artifact.h"
#include "AgentRelationship.h"
#include "AgentStyle.h"


class Agent {
	Mil_Int ID;
	Mil_Int Goal;
	bool FlagGoalDone;
	Mil_Int NumTimeSelected;
	Mil_Int NumInnovationSucceded;
	Mil_Int NumInnovationFailed;
	Mil_Int NumInnovationSuccededWithPartner;
	Mil_Int NumInnovationFailedWithPartner;
	Mil_Int NumProjectsSucceded;
	Mil_Int NumProjectsFailed;
	Mil_Double Activity;
	Mil_Int IDTempRequest;
	Mil_Int BornStep;
	
public:
	list<Mil_Int> LinkRecipes;
	list<Mil_Int> LinkArtifactsKnowed;
	Relationships TabRelationships;
	AgentStyle Style;
	
	Agent();
	Agent(Mil_Int tmpID, Mil_Double tmpActivity, Mil_Int tmpBornStep);
	Agent(Mil_Int tmpID, Mil_Double tmpActivity, Mil_Int tmpGoal, Mil_Int tmpNumInnovationSucceded,
			Mil_Int tmpNumInnovationFailed, Mil_Int tmpNumProjectsSucceded, Mil_Int tmpNumProjectsFailed,
			Mil_Int tmpNumTimeSelected, Mil_Int tmpNumInnovationSuccededWithPartner, 
			Mil_Int tmpNumInnovationFailedWithPartner, Mil_Int tmpBornStep);
	~Agent();
	Mil_Int GetID() {return ID;}
	Mil_Double GetActivity() {return Activity;}
	Mil_Int GetGoal() {return Goal;}
	bool GetFlagGoalDone() {return FlagGoalDone;}
	Mil_Int GetNumTimeSelected() {return NumTimeSelected;}
	bool GetStatus(Mil_Int tmpLowLevel);
	Mil_Int GetNumInnovationSucceded() {return NumInnovationSucceded;}
	Mil_Int GetNumInnovationFailed() {return NumInnovationFailed;}
	Mil_Int GetNumProjectsSucceded() {return NumProjectsSucceded;}
	Mil_Int GetNumProjectsFailed() {return NumProjectsFailed;}
	Mil_Int GetNumInnovationSuccededWithPartner() {return NumInnovationSuccededWithPartner;}
	Mil_Int GetNumInnovationFailedWithPartner() {return NumInnovationFailedWithPartner;}
	Mil_Int GetIDTempRequest() {return IDTempRequest;}
	Mil_Int GetBornStep() {return BornStep;}
	
	void SetActivity(Mil_Double tmpNewActivity) {Activity = tmpNewActivity;}
	void SetGoal(Mil_Int tmpNewValue) {Goal = tmpNewValue;}
	void SetFlagGoalDone(bool tmpNewValue) {FlagGoalDone = tmpNewValue;}
	void SetNumTimeSelected(Mil_Int tmpNewValue) {NumTimeSelected = tmpNewValue;}
	void SetNumInnovationSucceded(Mil_Int tmpNewValue) {NumInnovationSucceded = tmpNewValue;}
	void SetNumInnovationFailed(Mil_Int tmpNewValue) {NumInnovationFailed = tmpNewValue;}
	void SetNumProjectsSucceded(Mil_Int tmpNewValue) {NumProjectsSucceded = tmpNewValue;}
	void SetNumProjectsFailed(Mil_Int tmpNewValue) {NumProjectsFailed = tmpNewValue;}
	void SetNumInnovationSuccededWithPartner(Mil_Int tmpNewValue) {NumInnovationSuccededWithPartner = tmpNewValue;}
	void SetNumInnovationFailedWithPartner(Mil_Int tmpNewValue) {NumInnovationFailedWithPartner = tmpNewValue;}
	void SetIDTempRequest(Mil_Int tmpNewValue) {IDTempRequest = tmpNewValue;}
	void PrintMe();
	void PrintRelationship();
	void PrintArtifactsKnowed();
	
};

#endif

